package org.example.springaitest.tools;

import org.example.springaitest.controller.SseController;
import org.example.springaitest.service.TransactionService;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Component;



@Component
public class Tool {
    private final TransactionService  transactionService;
    public Tool(TransactionService transactionService) {
        this.transactionService = transactionService;
    }

    @org.springframework.ai.tool.annotation.Tool(description = "查询指定序列号的支付状态。用户必须明确提及“交易号”“订单号”“支付状态”等关键词并提供编号。\n" +
            "        例如：“序列号 123456 支付成功了吗？” → 调用。\n" +
            "        模糊提问如“怎么查支付状态？”或无编号时不调用。")
    public String getTransactionStatus(@ToolParam(description = "交易序列号")String Id) {
        SseController.sendToolInvokeNotify("查询支付状态");
        System.out.println("开始查询");

        if (transactionService == null) {
            return "ERROR: 查询初始化失败";
        }
        return transactionService.getFinalStatus(Id);
    }
    @org.springframework.ai.tool.annotation.Tool(description = "获取分布式服务状态")
    public String getContainerStatus() {
        System.out.println("开始获取分布式服务状态");
        SseController.sendToolInvokeNotify("获取分布式服务状态");

        return """
                {
                "成功次数": 2341523,
                "失败次数": 42,
                "成功率": "98.20%",
                "平均耗时 (ms)": 45,
                "最大耗时 (ms)": 1260,
                "最大并发数": 2180
                }""";
    }
    @org.springframework.ai.tool.annotation.Tool(description = "获取k8s容器状态")
    public String getK8sStatus() {
        System.out.println("开始获取k8s容器状态");
        SseController.sendToolInvokeNotify("获取k8s容器状态");

        return """
                {
                "CPU 使用率": "62%",
                "内存使用 / 上限": "11.3 GB / 16 GB",
                "网络丢包率": "0.03%",
                "网络吞吐 (RX/TX)": "280 MB/s/ 120 MB/s",
                "JVM 总内存": "10 GB",
                "JVM 堆内存 (已用 / 最大)": "6.4 GB / 8 GB",
                "GC 监控 (YGC/FGC/ 总停顿)": "YGC 23 / FGC 2 / 1.2 s",
                "数据源连接池使用率": "66 / 80 (83%)",
                "线程数 (当前 / 峰值)": "142 / 165"
                }""";
    }

}
